1. Field
The present invention generally relates to wireless communications and, more particularly, to a parallel turbo decoder system capable of asynchronous decoding and buffering parallel streams of information.
2. Background
FIG. 1 is a schematic block diagram depicting an example of a ⅓ parallel-concatenated turbo encoder (prior art). Turbo decoding is an iterative process that permits data error correction to be performed at near the Shannon limit. The ⅓ notation represents an implementation where one input bit stream is converted into a 3-component bit stream. The original data stream (x) passes to a multiplexer input, along with parity bit outputs (p1 and p2) from two parallel recursive systematic convolutional (RSC) encoders. An interleaver randomly arranges bits that are input into one of the RSC encoders. The multiplexer reassembles the three parallel input bit streams into an output serial stream (x p1 p2). Although a ⅓ turbo encoder is shown, ½, ¼, and ⅕ decoder are also known.
The turbo encoding is performed based upon the assumption that data will be degraded, due to noise, during transmission. On the receiver side of the transmission, a turbo decoder reconstructs the original bit stream by using a turbo trellis function to perform multiple search iterations.
FIG. 2 is a schematic block diagram of a turbo decoder (prior art). Each of the two maximum-a-posteriori (MAP) blocks generates extrinsic information. The extrinsic information represents the likelihood that a bit is either a “0” or a “1”. One MAP block 202 receives the non-interleaved data x and first parity bit p1 as inputs, along with the disinterleaved output bit. A second MAP decoder receives the second parity bit p2, along with an interleaved version of the original data x. The second MAP calculates an extrinsic value based upon the extrinsic value from the first MAP and the second parity bit. The second MAP feeds its extrinsic value output to a disinterleaver, whose output is feed back to the first MAP for another iteration.
One pass through both the MAPs is considered an iteration. Multiple iterations through the system are required to generate a signal with a low bit-error ratio (BER). The iterative process gradually corrects errors, and given enough iterations, all the errors can be corrected.
Given the high data rates and amount of data to be processed, many real-time receivers are unable to use turbo decoding to correct all the errors in the data they receive. It would be advantageous if received data could be split into parallel data streams and parallel processed, to minimize the bottleneck associated with turbo decoding. However, this solution would present the additional problem of how to efficiently collect and recombine the data streams after they are decoded.